home *** CD-ROM | disk | FTP | other *** search
- -a100 ;Begin assembling code at 100
- 0100 LXI H,2FE ;Where to store in memory
- 0103 SHLD 200 ;Keep pointer there
- 0106 MVI E,D ;Get a CR
- 0108 MVI C,4 ;Output to PUNCH {send to HOST}
- 010A CALL 5
- 010D MVI C,3 ;Input from READER {read from HOST}
- 010F CALL 5
- 0112 ANI 7F ;Strip parity bit
- 0114 PUSH PSW ;save a and flags
- 0115 MOV E,A ;move char to e for echo
- 0116 MVI C,2 ;Output to screen
- 0118 CALL 5
- 011B POP PSW ;restore a and flags
- 011C CPI 40 ;Is it our DEC-20 prompt?
- 011E JZ 127 ;Yes, have whole file in memory
- 0121 CALL 17A ;no , store another byte
- 0124 JMP 10D ;read another byte
- 0127 MVI A,1A ;Get a Control-Z {CP/M EOF mark}
- 0129 CALL 17A ;store it in memory
- 012C LXI H,300 ;Get memory pointer
- 012F SHLD 202 ;Store as DMA pointer
- 0132 LDA 201 ;Get 'HI' byte of memory pointer
- 0135 STA 200 ;and store it as 'LO' one
- 0138 XRA A
- 0139 STA 201 ;Zero 'HI' byte {slow *256}
- 013C MVI C,16 ;Make NEW file
- 013E LXI D,5C ;With FCB1
- 0141 CALL 5
- 0144 CALL 15E ;Write 128 bytes {sector}
- 0147 CALL 15E ;Write another sector
- 014A LXI H,FFFF ;Get a 16-bit Minus One
- 014D XCHG ;into DE
- 014E LHLD 200 ;Get 256-byte counter
- 0151 DAD D ;decrement
- 0152 SHLD 200 ;and store back
- 0155 MVI A,2 ;Check if
- 0157 CMP L ; 256-byte counter down to offset
- 0158 JZ 183 ;Yes, wer'e done
- 015B JMP 144 ;Keep writing..
- 015E LHLD 202 ;Get file-pointer
- 0161 XCHG ;into DE
- 0162 MVI C,1A ;Set DMA-address
- 0164 CALL 5
- 0167 MVI C,15 ;Write sector {128 bytes}
- 0169 LXI D,5C ;using FCB1
- 016C CALL 5
- 016F LHLD 202 ;Get file-pointer
- 0172 LXI D,80 ;128-bytes
- 0175 DAD D ;added to file-pointer
- 0176 SHLD 202 ;and save
- 0179 RET ;and return
- 017A LHLD 200 ;Get Memory-pointer
- 017D MOV M,A ;store character
- 017E INX H ;Increment Pointer
- 017F SHLD 200 ;and save
- 0182 RET ;and return
- 0183 MVI C,10 ;CLOSE file
- 0185 LXI D,5C ;using FCB1
- 0188 CALL 5
- 018B JMP 0 ;Force WARM BOOT
-